package domain.controllers.validators;

import domain.commands.TareaTrabajadaComando;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.springframework.validation.*;



public class TareaTrabajadaValidator implements Validator {

	public boolean supports(Class clazz) {
		
		return TareaTrabajadaComando.class.isAssignableFrom(clazz);
	}
	public void validate(Object comando, Errors errors) {
				
            ValidationUtils.rejectIfEmptyOrWhitespace(errors, "fecha", "fecha.vacio", null, "Introduzca un valor correcto para la fecha");
            ValidationUtils.rejectIfEmptyOrWhitespace(errors, "horaIni", "horaIni.vacio", null, "Introduzca un valor correcto para la hora inicial");
            ValidationUtils.rejectIfEmptyOrWhitespace(errors, "horaFin", "horaFin.vacio", null, "Introduzca un valor correcto para la hora final");
            
            TareaTrabajadaComando ttc = (TareaTrabajadaComando) comando;
            String hi = ttc.getHoraIni();
           if(!hi.equals("")){ 
            if(hi.length() != 5){
                errors.rejectValue("horaIni", "horaIni.correcto","La hora esta mal introudcida");
            }else{   
                if(!hi.substring(2, 3).equals(":")){
                    errors.rejectValue("horaIni", "horaIni.correcto","La hora esta mal introudcida, debe colocar los dos puntos entre horas y minutos");
                }else{
                  
                   Pattern p = Pattern.compile("[a-zA-Z]");
                   Matcher m = p.matcher(hi);
                if(m.find()){
                   errors.rejectValue("horaIni", "horaIni.correcto","la hora es incorretca");
                }
                 
               
                }
            }  
           }
            
            String hf = ttc.getHoraFin();
            
             if(!hf.equals("")){ 
            if(hf.length() != 5){
                errors.rejectValue("horaFin", "horaFin.correcto","La hora esta mal introudcida");
            }else{   
                if(!hf.substring(2, 3).equals(":")){
                    errors.rejectValue("horaFin", "horaFin.correcto","La hora esta mal introudcida, debe colocar los dos puntos entre horas y minutos");
                }else{
                  
                   Pattern p = Pattern.compile("[a-zA-Z]");
                   Matcher m = p.matcher(hf);
                if(m.find()){
                   errors.rejectValue("horaFin", "horaFin.correcto","la hora es incorretca");
                }
                 
               
                }
            }  
           }
            
            String fecha = ttc.getFecha();
           if(!fecha.equals("")){
               if(fecha.length() !=10 ){ 
               
              errors.rejectValue("fecha", "fecha.correcto","La fecha etsa mal, seleccionala del calendario por favor");
           
             
          }else if(!fecha.substring(4,5).equals("-")){
                errors.rejectValue("fecha", "fecha.correcto","La fecha etsa mal, seleccionala del calendario por favor ");
            }else if(!fecha.substring(7, 8).equals("-")){
                errors.rejectValue("fecha", "fecha.correcto","La fecha etsa mal, seleccionala del calendario por favor");
            }else{
                 
                 Pattern p = Pattern.compile("[a-zA-Z]");
                 Matcher m = p.matcher(fecha);
                if(m.find()){
                   errors.rejectValue("fecha", "fecha.correcto","La fecha es incorretca, selecione la fecha del calendario por favor");
              }
                 
               
              }
            
             }
        }
                                
}     
